perm filename COUNTL.LSP[AID,LSP] blob
sn#694858 filedate 1983-01-10 generic text, type C, neo UTF8
COMMENT ā VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 (declare (fixsw t))
C00004 ENDMK
Cā;
(declare (fixsw t))
(declare (special alist))
(defun countlines (file)
(let ((f (eopen file '(in ascii)))
(alist ())
(eof (ncons ())))
(do ((n 0)
(exp (read f eof)
(read f eof)))
((eq exp eof) (close f)
n)
(cond ((or (atom exp)
(numberp exp)
(null exp)))
((eq (car exp) 'define)
(push `(,(cadr exp) . ,(countmacro (cdddr exp)))
alist))
((memq (car exp) '(s1lap declare defsym)))
(t (let ((v (assq (car exp) alist)))
(cond (v (setq n (+ (cdr v) n)))
(t (setq n (1+ n))))))))))
(defun countmacro (l)
(do ((l l (cdr l))
(n 0))
((null l) n)
(cond ((atom (car l)))
((numberp (car l)))
((memq (caar l) '(s1lap declare defsym)))
(t (let ((v (assq (caar l) alist)))
(cond (v (setq n (+ (cdr v) n)))
(t (setq n (1+ n)))))))))
(defun countfiles (files)
(do ((n 0)
(files files (cdr files)))
((null files) n)
(setq n (+ n (countlines (car files))))))